import axios from "axios"; import { useEffect, useState } from "react"; import Filter from "@/components/elements/Filter"; import Footer from "@/components/layouts/Footer"; import Header from "@/components/layouts/Header"; import Layout from "@/components/layouts/Layout"; import Pagination from "@/components/elements/Pagination"; import ProductCard from "@/components/products/ProductCard"; import { getIdFromSlug, getNameFromSlug } from "@/core/utils/slug"; import FilterIcon from "@/icons/filter.svg"; import apiOdoo from "@/core/utils/apiOdoo"; import { Swiper, SwiperSlide } from "swiper/react"; import "swiper/css"; import "swiper/css/pagination"; import "swiper/css/autoplay"; import { Pagination as SwiperPagination } from "swiper"; import Image from "@/components/elements/Image"; export async function getServerSideProps(context) { const { slug, page = 1, category = '', price_from = '', price_to = '', order_by = '', } = context.query; let urlParameter = [ 'q=*', `page=${page}`, `brand=${getNameFromSlug(slug)}`, `category=${category}`, `price_from=${price_from}`, `price_to=${price_to}`, `order_by=${order_by}` ].join('&'); let searchResults = await axios(`${process.env.SELF_HOST}/api/shop/search?${urlParameter}`); searchResults = searchResults.data; const manufacture = await apiOdoo('GET', `/api/v1/manufacture/${getIdFromSlug(slug)}`); return { props: { searchResults, page, slug, category, price_from, price_to, order_by, manufacture } }; } export default function BrandDetail({ searchResults, page, slug, category, price_from, price_to, order_by, manufacture }) { const pageCount = Math.ceil(searchResults.response.numFound / searchResults.responseHeader.params.rows); const productStart = searchResults.responseHeader.params.start; const productRows = searchResults.responseHeader.params.rows; const productFound = searchResults.response.numFound; const [activeFilter, setActiveFilter] = useState(false); const [filterCount, setFilterCount] = useState(0); const route = () => { let route = `/shop/brands/${slug}`; if (category) route += `&category=${category}`; if (price_from) route += `&price_from=${price_from}`; if (price_to) route += `&price_to=${price_to}`; if (order_by) route += `&order_by=${order_by}`; return route; } useEffect(() => { let calculateFilterCount = 0; if (category) calculateFilterCount++; if (price_from || price_to) calculateFilterCount++; if (order_by) calculateFilterCount++; setFilterCount(calculateFilterCount); }, [category, price_from, price_to, order_by]); return ( <> setActiveFilter(false)} defaultPriceFrom={price_from} defaultPriceTo={price_to} defaultBrand='' defaultCategory={category} defaultOrderBy={order_by} searchResults={searchResults} disableFilter={['brand']} /> { manufacture.banners?.map((banner, index) => ( )) } { manufacture.logo ? ( ) : ( Brand { manufacture.name } ) } Produk {productFound > 0 ? ( <> Menampilkan {pageCount > 1 ? ( <> {productStart + 1}-{ (productStart + productRows) > productFound ? productFound : productStart + productRows } dari > ) : ''} {searchResults.response.numFound} produk untuk brand {getNameFromSlug(slug)} > ) : 'Mungkin yang anda cari'} setActiveFilter(true)}> Filter {filterCount > 0 ? `(${filterCount})` : ''} {searchResults.response.products.map((product) => ( ))} > ) }
Brand { manufacture.name }